package com.gouwudai.gobbs.dao.impl;

import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.gouwudai.gobbs.common.IPageList;
import com.gouwudai.gobbs.dao.ILogInfoDAO;
import com.gouwudai.gobbs.pojo.TbbsLogInfo;
/**
 * 
 * <pre>
 *  Title:系统日志信息DAO
 *  Description: 系统日志信息DAO
 * </pre>
 * 
 * @author <a href="mailto:littcai@hotmail.com">空心大白菜</a>
 * @date 2007-7-19
 * @version 1.0
 */
public class LogInfoDAOImpl extends BaseDAOImpl implements ILogInfoDAO
{
	private static final Log logger = LogFactory.getLog(LogInfoDAOImpl.class);	
	
    /**
     * 保存日志信息.
     * 
     * @param opUser 操作用户
     * @param opContent 操作内容
     * @param opIp 操作用户的IP
     * @param logType 日志类型
     * 
     * @return Integer 新增日志信息的ID
     */
    public Integer saveLog(String opUser,String opIp,int logType,String opContent)
    {           
        TbbsLogInfo tbbsLogInfo = new TbbsLogInfo();
        tbbsLogInfo.setOpUser(opUser);
        tbbsLogInfo.setOpIp(opIp);
        tbbsLogInfo.setOpDatetime(new Date());
        tbbsLogInfo.setLogType(logType);
        tbbsLogInfo.setOpContent(opContent);        
        return super.saveObject(tbbsLogInfo);       
    }
    
    /**
     * 保存分类、版面日志信息.
     * 
     * @param opUser 操作用户
     * @param classId 分类、版面ID
     * @param opContent 操作内容
     * @param opIp 操作用户的IP
     * @param logType 日志类型
     * 
     * @return Integer 新增日志信息的ID
     */
    public Integer saveClassLog(String opUser,String opIp,int classId,int logType,String opContent)
    {           
        TbbsLogInfo tbbsLogInfo = new TbbsLogInfo();
        tbbsLogInfo.setOpUser(opUser);
        tbbsLogInfo.setOpIp(opIp);
        tbbsLogInfo.setOpDatetime(new Date());
        tbbsLogInfo.setClassId(classId);
        tbbsLogInfo.setLogType(logType);
        tbbsLogInfo.setOpContent(opContent);        
        return super.saveObject(tbbsLogInfo);       
    }   
    
    /**
     * 保存分类、版面日志信息.
     * 
     * @param opUser 操作用户
     * @param classId 分类、版面ID
     * @param topicId 主题ID
     * @param opContent 操作内容
     * @param opIp 操作用户的IP
     * @param logType 日志类型
     * 
     * @return Integer 新增日志信息的ID
     */
    public Integer saveTopicLog(String opUser,String opIp,int classId,int topicId,int logType,String opContent)
    {           
        TbbsLogInfo tbbsLogInfo = new TbbsLogInfo();
        tbbsLogInfo.setOpUser(opUser);
        tbbsLogInfo.setOpIp(opIp);
        tbbsLogInfo.setOpDatetime(new Date());
        tbbsLogInfo.setClassId(classId);
        tbbsLogInfo.setTopicId(topicId);
        tbbsLogInfo.setLogType(logType);
        tbbsLogInfo.setOpContent(opContent);        
        return super.saveObject(tbbsLogInfo);       
    }     
	
    /**
     * 读取日志信息
     * @param id 主键
     * @return TbbsLogInfo 日志对象
     */
	public TbbsLogInfo load(Integer id)
	{
		return (TbbsLogInfo)super.loadObject(TbbsLogInfo.class, id);
	} 
	
    /**
     * 查询不是版面操作日志的日志
     * @param pageIndex
     * @param pageSize
     * @param sort
     * @return
     */
    public IPageList listPage(int pageIndex,int pageSize,String sort)
    {       
    	String listCountHql = "select count(*) from TbbsLogInfo where classId<>0";
        StringBuilder listHql = new StringBuilder("from TbbsLogInfo where classId<>0 ");    	
    	if(sort!=null)
            listHql.append(sort);
    	return super.listHqlPage(listHql.toString(), listCountHql, pageIndex, pageSize);
    }
    
    /**
     * 查询版面日志
     * @param pageIndex
     * @param pageSize
     * @param sort
     * @return
     */
    public IPageList listPageByClassId(int classId,int pageIndex,int pageSize,String sort)
    {       
        String listCountHql = "select count(*) from TbbsLogInfo where classId="+classId;
        StringBuilder listHql = new StringBuilder("from TbbsLogInfo where classId="); 
        listHql.append(classId);
        if(sort!=null)
            listHql.append(sort);
        return super.listHqlPage(listHql.toString(), listCountHql, pageIndex, pageSize);
    }    
    
}
